home *** CD-ROM | disk | FTP | other *** search
- /* Startup module for GNU C */
- /* I've put this into a C file so I can use the preprocessor. */
-
- #if !defined(__GNUC__)
- #error This file is for GNU C *only*
- #elif !defined(mc68000)
- #error This file is for m68k systems *only*
- #else
-
- asm(
- #ifdef SMALL_DATA
- " jbsr __geta4
- lea a4@(__edata:W),a0
- "
- #else
- " lea __edata,a0
- "
- #endif
- " movl #___bss_size,d0
- jeq ClearBSSDone
- ClearBSSLoop:
- clrl a0@+
- subql #4,d0
- jne ClearBSSLoop
- ClearBSSDone:
- "
- #ifdef SMALL_DATA
- " movl SP,a4@(StackPointer:W)
- "
- #else
- " movl SP,StackPointer
- "
- #endif
- #ifdef SMALL_CODE
- " jra PC@(__Startup+2)
- "
- #else
- " jmp __Startup
- "
- #endif
- " .globl ___exit
- ___exit:
- movl SP@(4),d0
- "
- #ifdef SMALL_DATA
- " movl a4@(StackPointer:W),SP
- "
- #else
- " movl StackPointer,SP
- "
- #endif
- " .globl __geta4
- __geta4:
- "
- #ifdef SMALL_DATA
- " lea ___a4_init,a4
- "
- #endif
- " rts
-
- .data
- .comm StackPointer,4
- .text
- ");
-
- #endif
-